﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Financiera
{
    public partial class Form_Planilla_Manual : Form
    {
        BindingManagerBase bmPlanilla;
        Object valorDevuelto;
        SqlConnection cn = new SqlConnection(Conexion.rutaDB);
        string fecha_vs, ConsultaSQL;
        string rutaFinancieraSQL = Conexion.rutaDB;
        decimal total = 0;
        char[] delimitadores = { '+', '-' };
        
        public Form_Planilla_Manual()
        {
            InitializeComponent();
        }

        private void CargaPlanilla(string moneda)
        {
            if (moneda != "")
            {
                if (Conexion.ds_financiera.Tables["Planilla"] != null)
                    Conexion.ds_financiera.Tables["Planilla"].Clear();
                string ConsultaSQLOperaciones = "Select * from Planilla where cod_moneda_p ='" + moneda + "' and  fecha_p='" + fecha_vs + "'";// and borado_p = 'false'";
                metodos.AgregarTablaDataSetSQLServer(rutaFinancieraSQL, ConsultaSQLOperaciones,
                                             "Planilla", ref Conexion.ds_financiera);
                grillaPlanilla.DataSource = Conexion.ds_financiera.Tables["Planilla"];
                //grillaPlanillaAux.Visible = false;
                SqlCommand comando = new SqlCommand(ConsultaSQL, cn);
                comando.CommandText = "select SUM(monto_p) from Planilla where cod_moneda_p='" + cmbMoneda.Text + "' and fecha_p ='" + fecha_vs + "'";// and borado_p = 'false'";
                comando.CommandType = CommandType.Text;
                comando.Connection = cn;
                cn.Open();
                valorDevuelto = comando.ExecuteScalar();
                cn.Close();
            }
            else {
                if (Conexion.ds_financiera.Tables["Planilla"] != null)
                    Conexion.ds_financiera.Tables["Planilla"].Clear();
                string ConsultaSQLOperaciones = "Select * from Planilla where fecha_p='" + fecha_vs + "'";
                metodos.AgregarTablaDataSetSQLServer(rutaFinancieraSQL, ConsultaSQLOperaciones,
                                             "Planilla", ref Conexion.ds_financiera);
                grillaPlanilla.DataSource = Conexion.ds_financiera.Tables["Planilla"];
            }
        }

        private void CargaTextBox()
        {
            txtDetallePlanilla.DataBindings.Add(new Binding("Text", Conexion.ds_financiera,
            "Planilla." + Conexion.ds_financiera.Tables["Planilla"].Columns[0].ColumnName.ToString()));
            txtCodMonedaEdit.DataBindings.Add(new Binding("Text", Conexion.ds_financiera,
           "Planilla." + Conexion.ds_financiera.Tables["Planilla"].Columns[1].ColumnName.ToString()));
            txtMontoEdit.DataBindings.Add(new Binding("Text", Conexion.ds_financiera,
            "Planilla." + Conexion.ds_financiera.Tables["Planilla"].Columns[2].ColumnName.ToString()));
        }

        private void Form_Planilla_Manual_Load(object sender, EventArgs e)
        {
            //grillaPlanillaAux.Visible = false;
            //carga de monedas
            if (cmbMoneda.Items.Count > 0)
            {
                cmbMoneda.Items.Clear();
            }

            //se declara una variable de tipo SqlConnection
            SqlConnection cn = new SqlConnection();
            //se indica la cadena de conexion
            cn.ConnectionString = Conexion.rutaDB;
            //código para llenar el comboBox
            DataSet ds = new DataSet();
            //indicamos la consulta en SQL
            SqlDataAdapter da = new SqlDataAdapter("SELECT DISTINCT Cod_moneda_a FROM Moneda_actual", cn);
            //se indica el nombre de la tabla
            da.Fill(ds, "Moneda_actual");

            foreach (DataRow row in ds.Tables["Moneda_actual"].Rows)
            {
                cmbMoneda.Items.Add(row[0].ToString());
                cmbOperaciones.Items.Add(row[0].ToString());
                cmbPlanillaMan.Items.Add(row[0].ToString());
                cmbPlanillaOp.Items.Add(row[0].ToString());
                cmbPlanillaOpManu.Items.Add(row[0].ToString());
            }
            cmbMoneda.Items.Add("Todas");
            cmbMoneda.SelectedIndex = 0;
            cmbPlanillaMan.SelectedIndex = 0;
            //CargaPlanilla();
            grillaPlanillaAux.Columns.Add("col_moneda", "Codigo Moneda");
            grillaPlanillaAux.Columns.Add("col_monto", "Monto");
            grillaPlanillaAux.Columns.Add("col_moneda_pago", "Codigo Moneda Pago");
            grillaPlanillaAux.Columns.Add("col_fecha", "Fecha");
            TextBox txtFecha = new TextBox();
            txtFecha.Text = Conexion.fecha_d + "/" + Conexion.fecha_m + "/" + Conexion.fecha_a;
            fecha_vs = txtFecha.Text;
            Convert.ToDateTime(fecha_vs);
            CargaPlanilla(cmbMoneda.Text);
            bmPlanilla = BindingContext[Conexion.ds_financiera, "Planilla"];
            CargaTextBox();
        }

        private void txtDatos_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                grillaPlanillaAux.Rows.Add(cmbMoneda.Text, Convert.ToSingle(txtDatos.Text),cmbPlanillaMan.Text, fecha_vs);
                total += Convert.ToDecimal(txtDatos.Text);
                txtDatos.Clear();
                e.Handled = true;
                e.SuppressKeyPress = true;
            }
        }

        private void cmbMoneda_SelectedValueChanged(object sender, EventArgs e)
        {
            CargaPlanilla(cmbMoneda.Text);
        }

        private void bntVolcarPlanilla_Click(object sender, EventArgs e)
        {
            grillaPlanillaAux.Visible = false;
            grillaPlanilla.Visible = false;
            grillaOp.Visible = true;
            grillaPla.Visible = true;
            cmbMoneda.Visible = false;
            cmbOperaciones.Visible = true;
            cmbPlanillaOp.Visible = true;
            lblMonedaPla.Visible = true;
            switch(cmbOperaciones.Text){
                case ("DO"):
                    switch (cmbPlanillaMan.Text)
                    {
                        case ("DO"):
                            ConsultaSQL = "Select monto_d from Detalle_operaciones inner join operaciones on Detalle_operaciones.cod_operacion_d = Operaciones.cod_operaciones_o and Detalle_operaciones.cod_moneda_d= '" + cmbOperaciones.Text + "'and operaciones.fecha_o = '" + fecha_vs + "'";
                            break;
                        case ("PE"):
                            ConsultaSQL = "Select (pago_d*-1) from Detalle_operaciones inner join operaciones on Detalle_operaciones.cod_operacion_d = Operaciones.cod_operaciones_o and Detalle_operaciones.cod_moneda_pago_d= '" + cmbPlanillaMan.Text + "'and operaciones.fecha_o = '" + fecha_vs + "'";
                            break;
                        case ("EU"):
                            ConsultaSQL = "Select (pago_d*-1) from Detalle_operaciones inner join operaciones on Detalle_operaciones.cod_operacion_d = Operaciones.cod_operaciones_o and Detalle_operaciones.cod_moneda_pago_d= '" + cmbPlanillaMan.Text + "'and operaciones.fecha_o = '" + fecha_vs + "'";
                            break;
                        default:
                            ConsultaSQL = "Select monto_d from Detalle_operaciones inner join operaciones on Detalle_operaciones.cod_operacion_d = Operaciones.cod_operaciones_o and Detalle_operaciones.cod_moneda_d= '" + cmbPlanillaMan.Text + "'and operaciones.fecha_o = '" + fecha_vs + "'";
                            break;
                    }
                    break;
                case ("EU"):
                    switch (cmbPlanillaMan.Text)
                    {
                        case ("EU"):
                            ConsultaSQL = "Select monto_d from Detalle_operaciones inner join operaciones on Detalle_operaciones.cod_operacion_d = Operaciones.cod_operaciones_o and Detalle_operaciones.cod_moneda_d= '" + cmbOperaciones.Text + "'and operaciones.fecha_o = '" + fecha_vs + "'";
                            break;
                        case ("DO"):
                            ConsultaSQL = "Select (pago_d*-1) from Detalle_operaciones inner join operaciones on Detalle_operaciones.cod_operacion_d = Operaciones.cod_operaciones_o and Detalle_operaciones.cod_moneda_d= '" + cmbPlanillaMan.Text + "'and operaciones.fecha_o = '" + fecha_vs + "'";
                            break;
                        case ("PE"):
                            ConsultaSQL = "Select (pago_d*-1) from Detalle_operaciones inner join operaciones on Detalle_operaciones.cod_operacion_d = Operaciones.cod_operaciones_o and Detalle_operaciones.cod_moneda_pago_d= '" + cmbPlanillaMan.Text + "'and operaciones.fecha_o = '" + fecha_vs + "'";
                            break;
                        default:
                            ConsultaSQL = "Select monto_d from Detalle_operaciones inner join operaciones on Detalle_operaciones.cod_operacion_d = Operaciones.cod_operaciones_o and Detalle_operaciones.cod_moneda_d= '" + cmbPlanillaMan.Text + "'and operaciones.fecha_o = '" + fecha_vs + "'";
                            break;
                    }
                    break;
                default:
                    ConsultaSQL = "Select (pago_d*-1) from Detalle_operaciones inner join operaciones on Detalle_operaciones.cod_operacion_d = Operaciones.cod_operaciones_o and Detalle_operaciones.cod_moneda_pago_d= '" + cmbOperaciones.Text + "'and operaciones.fecha_o = '" + fecha_vs + "'";
                    break;
                }
            SqlConnection cn1 = new SqlConnection(Conexion.rutaDB);
            cn1.Open();
            SqlDataAdapter adaptador = new SqlDataAdapter(ConsultaSQL, cn1);
            DataSet ds = new DataSet();
            adaptador.Fill(ds);
            grillaOp.DataSource = ds.Tables[0];
            cn1.Close();
            ConsultaSQL = "Select monto_p from Planilla where cod_moneda_p = '" + cmbPlanillaOp.Text + "' and fecha_p = '" + fecha_vs + "' and cod_moneda_c = '" + cmbPlanillaOpManu.Text + "' and borrado_p = 'false'";
            cn1 = new SqlConnection(Conexion.rutaDB);
            cn1.Open();
            SqlDataAdapter adaptador2 = new SqlDataAdapter(ConsultaSQL, cn1);
            DataSet ds2 = new DataSet();
            adaptador2.Fill(ds2);
            grillaPla.DataSource = ds2.Tables[0];
            cn1.Close();
            grillaPla.Columns[0].HeaderText = "Planilla";
        }

        private void btnTerminaVolcado_Click(object sender, EventArgs e)
        {
            cmbMoneda.Visible = true;
            cmbOperaciones.Visible = false;
            cmbPlanillaOp.Visible = false;
            lblMonedaPla.Visible = false;
            CargaPlanilla(cmbMoneda.Text);
        }

        private void btnEditarPlanilla_Click(object sender, EventArgs e)
        {
            CargaPlanilla("");
            btnCancelarEdit.Visible = btnGuardarEdit.Visible = lblMonedaEdit.Visible = lblMontoEdit.Visible = txtCodMonedaEdit.Visible = txtMontoEdit.Visible = lblCodDet.Visible = txtDetallePlanilla.Visible = true;
        }

        private void btnCancelarEdit_Click(object sender, EventArgs e)
        {
            btnCancelarEdit.Visible = btnGuardarEdit.Visible = lblMonedaEdit.Visible = lblMontoEdit.Visible = txtCodMonedaEdit.Visible = txtMontoEdit.Visible = lblCodDet.Visible = txtDetallePlanilla.Visible = false;
            CargaPlanilla(cmbMoneda.Text);
        }

        private void grillaPlanilla_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (btnGuardarEdit.Visible)
                bmPlanilla.Position = 0;
                bmPlanilla.Position = e.RowIndex;
        }

        private void btnGuardarEdit_Click(object sender, EventArgs e)
        {
            ConsultaSQL = "execute Modifica_Planilla " + txtDetallePlanilla.Text + ",'" + txtCodMonedaEdit.Text + "'," + txtMontoEdit.Text;
            cn.Open();
            SqlCommand comando = new SqlCommand(ConsultaSQL, cn);
            comando.ExecuteNonQuery();
            cn.Close();
            CargaPlanilla("");
        }

        private void btnBorrarPlanilla_Click(object sender, EventArgs e)
        {
            ConsultaSQL = "execute Borra_Planilla '" + fecha_vs + "','true'";
            cn.Open();
            SqlCommand comando = new SqlCommand(ConsultaSQL, cn);
            comando.ExecuteNonQuery();
            cn.Close();
            CargaPlanilla("");
        }

        private void btnGuardarPlanilla_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < (grillaPlanillaAux.RowCount - 1); i++)
            {
                ConsultaSQL = "execute Agrega_Planilla '" + grillaPlanillaAux.Rows[i].Cells[0].Value + "'," + Convert.ToSingle(grillaPlanillaAux.Rows[i].Cells[1].Value) + ",'" + fecha_vs + "','" + grillaPlanillaAux.Rows[i].Cells[2].Value + "','False'";
                //MessageBox.Show(ConsultaSQL);
                cn.Open();
                SqlCommand comando = new SqlCommand(ConsultaSQL, cn);
                comando.ExecuteNonQuery();
                cn.Close();
            }
        }
    }
}
